10 DV=PEEK(186):IF DV<8 THEN DV=8 20 CLOSE15:OPEN15,DV,15,"I":CLOSE15 100 POKE147,0:SYS57812"MOD COPIER.O",DV,1:SYS62631 105 GOTO305 106 DV=PEEK(186):IF DV<8 THEN DV=8:REM DV DEFINED AGAIN BECAUSE OF CLR COMMAND 107 CLOSE15:OPEN15,DV,15,"I":CLOSE15 110 SYS SD,DN$,BF%,NF%,FI$(.),NB%(.),FT%(.),S%(.),TR%(.),SE%(.),L$(.):RETURN 115 REM ISSUED IN LINE 305 120 POKE214,4:PRINT:PRINTTAB(11)"[154]"S$(CS) 125 PRINT"[164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164]":POKE1303,100:POKECO+1303,2 130 POKE214,6:PRINT:FORA=1TO14 135 PRINT"  " 140 NEXT 143 CLOSE15:OPEN15,DV,15,"I":CLOSE15 145 RETURN 150 POKE214,21:PRINT 155 FORA=1TO2:PRINT" ":NEXT 160 PRINT"[145][145]";:RETURN 165 B=.:FORA=8TO11:OPEN15,A,15:CLOSE15 170 D(A-7)=.:IFST=.THEND(A-7)=A:B=B+1 175 NEXT:FORA=1TO4:IFD(A)<>.THENSD%=D(A):A=4 180 NEXT:IFB=1THENTD%=SD%:RETURN 185 FORA=SD%-6TO4:IFD(A)<>.THENTD%=D(A):A=4 190 NEXT:RETURN 195 HI=INT(A/256):LO=A-HI*256:RETURN 200 OPEN15,SD%,15,"I0":INPUT#15,ER,ER$,TR,SE:CLOSE15:OK=-1:IFER=.THENRETURN 205 POKE214,15:PRINT:FORA=1TO3:PRINT" " 210 NEXT:PRINT"[145][145][145] --- DRIVE ERROR ---" 215 A$="ERROR:"+STR$(ER)+" "+ER$:PRINTTAB((20-LEN(A$)/2)+1)A$ 220 PRINT"[154] TRACK:"TR;TAB(23)"[154]SECTOR:"SE:OK=NOT(OK):RETURN 225 GOSUB150:PRINT" [154]PRESS SPACE [154]TO RETURN TO" 230 PRINT" THE MAIN MENU":POKE198,. 235 IFPEEK(203)<>60THEN235 240 RETURN 245 S$(1)=" VIEW DIRECTORY " 250 S$(2)=" COPY FILES " 255 S$(3)=" SCRATCH FILES " 260 S$(4)=" DISK COMMAND " 265 S$(5)=" QUIT PROGRAM " 270 : 275 M$(1)="1. VIEW DIRECTORY" 280 M$(2)="2. COPY FILES " 285 M$(3)="3. SCRATCH FILES " 290 M$(4)="4. DISK COMMAND " 295 M$(5)="5. QUIT PROGRAM " 300 RETURN 305 POKE55,.:POKE56,64:CLR:POKE650,128 306 DV=PEEK(186):IF DV<8 THEN DV=8:REM DV DEFINED AGAIN BECAUSE OF CLR COMMAND 307 CLOSE15:OPEN15,DV,15,"I":CLOSE15 310 POKE53280,2:POKE53281,.:CO=54272 315 OP=16384:NI=OP+29:EN=OP+176:REM OP IS THE START ADDRESS OF COPIER.O 320 SL=16754:UP=17633:DN=UP+3 325 RE=17903:WR=18269:SD=18420 330 DIM FI$(144),NB$(144),FT%(144),S%(144),L$(144),NF%,NS%,TR%(144),SE%(144) 335 DIM SA(145) 340 CS=1:NS=5:DIM M$(NS),S$(NS),D(4) 345 T$(.)="DEL":T$(5)=" DELETED " 350 T$(1)="SEQ":T$(6)="SEQUENTIAL" 355 T$(2)="PRG":T$(7)=" PROGRAM " 360 T$(3)="USR":T$(8)=" USER " 365 T$(4)="REL":T$(9)=" RELATIVE " 370 SP$=" " 375 PRINTCHR$(142)"[147] [158]STAR COPIER" 380 PRINT" BY MIKE MAYNARD" 385 PRINT"[163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163]" 390 GOSUB245:GOSUB165 395 IFFLTHENPOKE214,21:PRINT:GOTO435 400 GOSUB130:PRINT" [154]MAIN MENU " 405 PRINT"[158][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164]":POKE1303,100:POKECO+1303,7 410 FORA=1TONS+2 415 PRINT"[150] ";:NEXT 420 PRINT"[146][158][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163]":POKE1623,99:POKE1623+CO,7 425 POKE214,20:PRINT 430 PRINT"[163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163]":POKE1903,99:POKE1903+CO,2 435 PRINT" [154]USE THE CURSOR KEYS [154]TO MOVE THE" 440 PRINT" REVERSED AREA. PRESS RETURN [154]TO SELECT.":IFFLTHEN470 445 FORA=217TO242:POKEA,PEEK(A)OR128:NEXT:POKE214,7:PRINT 450 FORA=1TONS 455 IFA=CSTHENPRINTTAB(11)""M$(A):GOTO465 460 PRINTTAB(11)"[150]"M$(A) 465 NEXT 470 POKE214,15:PRINT:PRINT" [145]" 475 PRINT" SOURCE DEVICE NUMBER:[153]"SD%:POKEOP+3,SD% 480 PRINT" " 485 POKE214,17:PRINT:PRINT" [145]" 490 PRINT" TARGET DEVICE NUMBER:[153]"TD% 495 PRINT" ":IFFLTHEN510 500 POKE214,6+LS:PRINT:PRINTTAB(11)"[150]"M$(LS) 505 POKE214,6+CS:PRINT:PRINTTAB(11)""M$(CS) 510 LS=CS:FL=. 515 A=PEEK(203):IFA<>13ANDA<>22ANDA<>1ANDA<>7ANDA<>2THEN515 520 IFA=1THEN ON CS GOTO595 ,790,1090,1180,1240 525 IFA=13ORA=22THEN565 530 IF(PEEK(653)AND1)THEN550 535 IFA=7THENCS=CS+1:IFCS>NSTHENCS=1 540 IFA=2THENCS=CS-1:IFCS=.THENCS=NS 545 GOTO500 550 IFA=7THENCS=CS-1:IFCS=.THENCS=NS 555 IFA=2THENCS=CS+1:IFCS>NSTHENCS=1 560 GOTO500 565 IFA=13THENSD%=SD%+1:IFSD%=12THENSD%=8 570 IFA=22THENTD%=TD%+1:IFTD%=12THENTD%=8 575 IFD(SD%-7)=.ORD(TD%-7)=.THEN565 580 POKE214,15:PRINT:PRINTTAB(29)"[153]"SD%"[157] ":POKEOP+3,SD% 585 POKE214,17:PRINT:PRINTTAB(29)"[153]"TD%"[157] " 590 GOTO515 595 GOSUB200:IFNOT(OK)THENFL=1:GOTO785 600 POKE1020,8:POKE1021,1:POKE1022,40:POKE1023,14 605 GOSUB120:GOSUB150:PRINT" [154]PRESS: P[154] TO PAUSE" 610 PRINT" A[154] TO ABORT" 615 POKE214,6:PRINT:SYS(OP) 620 SYS(NI),DN$,BF%:BF$=STR$(BF%):BF$=RIGHT$("00"+RIGHT$(BF$,LEN(BF$)-1),3) 625 ID$=RIGHT$(DN$,2):DN$=LEFT$(DN$,16):POKE1020,9:POKE1023,13 630 POKE214,4:PRINT:PRINT"[154] DISK NAME:"DN$TAB(33)"[154]ID:"ID$"[153]":BU%=.:NF%=. 635 PRINT" [158]BLKS[221] [158]TYPE [221] [158]FILENAME [221][158]TRK [221][158]SEC":LN%=1:POKE198,. 640 SYS(EN),FI$,NB%,FT% 645 S=.:IFFT%<5THENS=1 650 FT%=FT%AND127 655 NB$=" "+STR$(NB%):NB$=RIGHT$(NB$,3):IFFT%<1THEN690 660 BU%=BU%+NB%:NF%=NF%+1:LN%=LN%+1:IFLN%>14THENLN%=14:SYSUP:PRINT"[145][145]" 665 TR$=RIGHT$(" "+STR$(PEEK(RE+3)),2):SE$=RIGHT$(" "+STR$(PEEK(RE+4)),2) 670 PRINT" [153]"NB$" [221] ";:IF(FT%AND64)THENFT%=FT%AND63:PRINT"[157][156]>"; 675 PRINT" ";:IF(S)THENPRINT"[157]*"; 680 PRINT"[153]"T$(FT%AND15)" [221][153]";:POKE212,1:PRINTLEFT$(FI$+SP$,16); 685 POKE212,.:PRINT" [221][153] "TR$" [221][153] "SE$ 690 GETA$:IFA$<>"A"ANDA$<>"P"THEN745 695 IFA$="A"THEN725 700 CL=PEEK(214):GOSUB150:PRINT" [158]VIEW DIRECTORY PAUSED" 705 PRINT" [154]PRESS SPACE [154]TO CONTINUE":POKE198,. 710 IFPEEK(203)<>60THEN710 715 GOSUB150:PRINT" [154]PRESS: P[154] TO PAUSE" 720 PRINT" A[154] TO ABORT[153]":POKE214,CL-1:PRINT:GOTO745 725 IFLN%<13THEN735 730 FORB=1TO((LN%=13)*-1+(LN%=14)*-2):SYSUP:PRINT"[145][145]":NEXT 735 PRINT" [150]VIEW DIRECTORY ABORTED!":LN%=LN%+2:IFLN%>14THENLN%=14 740 CLOSE3:CLOSE15:BU$="???":OT$=BU$:NF$=BU$:GOTO765 745 IFPEEK(2)=.THEN640 750 BU$=STR$(BU%):BU$=RIGHT$("00"+RIGHT$(BU$,LEN(BU$)-1),3) 755 OT$=STR$(664-BF%-BU%):OT$=RIGHT$("00"+RIGHT$(OT$,LEN(OT$)-1),3) 760 NF$=STR$(NF%):NF$=RIGHT$("00"+RIGHT$(NF$,LEN(NF$)-1),3) 765 IFLN%<13THEN775 770 FORB=1TO((LN%=13)*-2+(LN%=14)*-3):SYSUP:PRINT"[145][145]":NEXT 775 PRINT" [158]BLOCKS->[154]FREE:"BF$" [154]USED:"BU$" [154]OTHER:"OT$ 780 PRINT"[154] TOTAL NUMBER OF FILES:"NF$ 785 POKE1020,8:POKE1023,14:GOSUB225:GOTO395 790 GOSUB1340:IFNOT(OK)THEN785 795 GOSUB1310 800 GOSUB120:POKE214,6:PRINT 805 FORA=1TO14:PRINTTAB(19)"[221]":NEXT 810 POKE214,6:PRINT:PRINTTAB(5)"[158]READING:"TAB(26)"WRITING:":C1%=.:C2%=. 815 CF%=1:F%=.:LN%=.:AP%=.:FU%=. 820 BF%=1:SA(1)=24458:POKE214,C1%+7:PRINT 825 POKE1020,9:POKE1021,1:POKE1022,18:POKE1023,13 830 IFS%(CF%)=.THEN920 835 IFFT%(CF%)>4THEN865 840 IFC1%>11THENFORB=1TO((C1%=12)*-1+(C1%=13)*-2):SYSUP:PRINT"[145][145]":NEXT 845 C1%=C1%+1:S%(CF%)=.:A$=FI$(CF%):PRINT 850 PRINT"[145]"TAB(10-LEN(A$)/2)"[150]"A$:PRINTTAB(2)"CAN'T COPY SPLAT" 855 NS%=NS%-1:IFNS%=.THEN1055 860 GOTO920 865 C1%=C1%+1:IF(C1%>13)AND(FU%=.)THENC1%=13:SYSUP:PRINT"[145][145]" 870 IF(FU%)THENPRINT"[145][145]" 875 A$=FI$(CF%):PRINTTAB(10-LEN(A$)/2)""A$ 880 A=SA(BF%):GOSUB195:POKE251,LO:POKE252,HI 885 IF(FU%)THENFU%=.:TR%(CF%)=TK%:SE%(CF%)=SC% 890 SYS(RE),SD%,TR%(CF%),SE%(CF%) 895 PRINT"[145]"TAB(10-LEN(A$)/2)""A$ 900 IF(PEEK(2)AND3)THEN1270 905 IF(PEEK(2)AND32)THENFU%=1:TK%=PEEK(RE+3):SC%=PEEK(RE+4):GOTO915 910 IF(PEEK(2)AND128)THEN1295 915 BF%=BF%+1:SA(BF%)=PEEK(251)+PEEK(252)*256:IF(FU%)THEN925 920 CF%=CF%+1:IFCF%<=NF%THEN830 925 IFSD%<>TD%THEN950 930 GOSUB150:PRINT" [158]INSERT TARGET DISK":POKE198,. 935 PRINT" [154]PRESS SPACE [154]TO CONTINUE" 940 IFPEEK(203)<>60THEN940 945 GOSUB1310 950 N%=1:POKE1020,9:POKE1021,21:POKE1022,20:POKE1023,13:POKE214,C2%+7:PRINT 955 IF(AP%=.)THENF%=F%+1:IFS%(F%)=.THEN955 960 F$=FI$(F%)+","+LEFT$(T$(FT%(F%)AND15),1)+",W" 965 IF(AP%)THENF$=LEFT$(F$,LEN(F$)-1)+"A" 970 IF(AP%=.)THENC2%=C2%+1:IFC2%>13THENC2%=13:SYSUP:PRINT"[145][145]" 975 IF(AP%)THENPRINT"[145][145]" 980 A$=FI$(F%):PRINTTAB(30-LEN(A$)/2)""A$ 985 IF(AP%=.)THENOPEN15,TD%,15,"R0:"+FI$(F%)+"="+FI$(F%):INPUT#15,ER:CLOSE15 990 IF(AP%=1)OR(ER=62)THEN1010 995 IFC2%>12THENFORB=1TO((C2%=13)*-1+(C2%=14)*-2):SYSUP:PRINT"[145][145]":NEXT 1000 C2%=C2%+1 1005 PRINT"[145]"TAB(30-LEN(A$)/2)"[150]"A$:PRINTTAB(23)"ALREADY EXISTS":GOTO1040 1010 A=SA(N%):GOSUB195:POKE781,LO:POKE782,HI 1015 A=SA(N%+1)-2:GOSUB195:POKE253,LO:POKE254,HI 1020 SYS(WR),F$,TD%:AP%=. 1025 PRINT"[145]"TAB(30-LEN(A$)/2)""A$ 1030 IF(PEEK(2)AND3)THEN1270 1035 IF(PEEK(2)AND128)THEN1295 1040 N%=N%+1:IFN%TD%THEN820 1065 GOSUB150:PRINT" [158]INSERT SOURCE DISK":POKE198,. 1070 PRINT" [154]PRESS SPACE [154]TO CONTINUE" 1075 IFPEEK(203)<>60THEN1075 1080 GOSUB1310:GOTO820 1085 : 1090 GOSUB1340:IFNOT(OK)THEN785 1095 GOSUB150:A$="PLEASE WAIT ... SCRATCHING"+STR$(NS%)+" [154]FILES" 1100 PRINTTAB((20-LEN(A$)/2)+1)"[154]"A$ 1105 PRINT" PRESS AND HOLD A[154] TO ABORT SCRATCHING." 1110 GOSUB120:POKE214,6:PRINT:LN=. 1115 FORA=1TONF%:IFS%(A)<>1THEN1150 1120 LN=LN+1:IFLN>14THENLN=14:SYSUP:PRINT"[145][145]" 1125 A$="[150]SCRATCHING: "+FI$(A):PRINTTAB((20-LEN(A$)/2)+1)A$ 1130 IF(FT%(A)AND64)=.THEN1140 1135 PRINTTAB(5)"[145][150]"LEFT$(FI$(A)+SP$,16)" *LOCKED FILE*":GOTO1150 1140 OPEN15,SD%,15,"S0:"+FI$(A):CLOSE15 1145 PRINT"[145]"TAB(5)LEFT$(FI$(A)+SP$,16)" ... SCRATCHED" 1150 IFPEEK(203)=10THEN1160 1155 NEXT:GOTO785 1160 GOSUB150:PRINT" [150]SCRATCH PROCEDURE ABORTED!" 1165 PRINT" [154]PRESS SPACE [154]TO RETURN TO THE MAIN MENU":POKE198,. 1170 IFPEEK(203)<>60THEN1170 1175 GOTO395 1180 GOSUB150:PRINT"[154]ENTER DISK COMMAND (RETURN [154]ALONE EXITS)" 1185 PRINT">";:GOSUB1405:IFB$=""THENGOSUB150:FL=2:GOTO435 1190 OPEN15,SD%,15,B$:CLOSE15 1195 OPEN15,SD%,15:INPUT#15,ER,ER$,TR,SE:CLOSE15 1200 IFER=.THEN1180 1205 GOSUB205:GOSUB150 1210 PRINT" [154]PRESS SPACE [154]TO CONTINUE":POKE198,. 1215 IFPEEK(203)<>60THEN1215 1220 POKE214,15:PRINT:FORA=1TO4:PRINT" " 1225 NEXT:PRINT"[145][145][145][145] SOURCE DEVICE NUMBER:[153]"SD% 1230 PRINT" TARGET DEVICE NUMBER:[153]"TD% 1235 GOTO1180 1240 GOSUB150:PRINT" [154]ARE YOU SURE YOU WANT TO QUIT? (Y[154]/N[154])":POKE198,. 1245 A=PEEK(203):IFA<>25ANDA<>39THEN1245 1250 IFA=39THENFL=1:GOTO395 1265 GOTO 40000 1270 POKE214,11:PRINT 1275 PRINT"[163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][157][148][163]" 1280 PRINT" [150]DISK ERROR -- [154]COPYING STOPPED!" 1285 PRINT"[164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][157][148][164]" 1290 GOSUB225:GOTO395 1295 FORZ=1TO5:GOSUB150:FORB=1TO400:NEXT 1300 PRINT" [150]USER ABORTED COPYING...":FORB=1TO400:NEXT:NEXT 1305 GOSUB225:GOTO395 1310 A=PEEK(214) 1315 GOSUB150:A$="PLEASE WAIT ... COPYING"+STR$(NS%)+" [154]FILES" 1320 PRINTTAB((20-LEN(A$)/2)+1)"[154]"A$ 1325 PRINT" PRESS AND HOLD A[154] TO ABORT COPYING." 1330 POKE214,A:PRINT:RETURN 1335 : 1340 GOSUB200:IFNOT(OK)THENFL=1:RETURN 1345 GOSUB120:GOSUB150:POKE214,11:PRINT:GOSUB110:IF(NF%=.)THEN1380 1350 GOSUB150:PRINT" [154]USE CURSOR KEYS [154]TO MOVE ARROWS UP/DOWN" 1355 PRINT" SPACE [154]SELECTS/DESELECTS - RETURN [154]EXITS" 1360 POKE1020,8:POKE1021,1:POKE1022,40:POKE1023,14 1365 GOSUB130:POKE214,6:PRINT 1370 SYS(SL),L$(1),NF%,S%(1),NS% 1375 IF(NS%)THENRETURN 1380 GOSUB120:POKE214,10:PRINT 1385 IFNF%=.THENPRINT" [150]THERE ARE NO FILES ON THIS DISK!":GOTO1395 1390 PRINT" [150]YOU DIDN'T SELECT ANY FILES!" 1395 PRINT" CAN'T CONTINUE PROCEDURE" 1400 OK=.:RETURN 1405 B$="":PRINT"[164]";:POKE198,. 1410 FORA=1TO37 1415 GETA$:IFA$=""THEN1415 1420 IFA$=CHR$(13)THENPRINT"[157] ":RETURN 1425 IFA$=CHR$(20)ANDA>1THENA=A-1:PRINT"[157][157] [157][157][164]";:B$=LEFT$(B$,A-1):GOTO1415 1430 IFA=37THEN1415 1435 IFA$>=" "ANDA$<="Z"THEN1450 1440 IFA$>="[193]"ANDA$<="[218]"THEN1450 1445 GOTO1415 1450 PRINT"[157]"A$;:POKE212,.:PRINT"[164]";:B$=B$+A$:NEXT 10000 F$="MODSTAR COPIER":DV=PEEK(186):IF DV<8 THEN DV=8 10005 CLOSE15:OPEN15,DV,15,"I":CLOSE15 10010 CLOSE15:OPEN15,DV,15,"S:"+F$:CLOSE15:SAVE F$,DV:VERIFY F$,DV:END 40000 FORI=8TO29:POKE820+I,I:NEXT:IFDV>8ANDDV<30THENPOKE828,DV:POKE820+DV,8 40010 A$="PRESENTER":GOSUB40030:A$="HELLO CONNECT":GOSUB40030 40020 PRINT"[147]":POKE53272,23:POKE53280,11:POKE53281,0:POKE646,13:END 40030 FORJ=8TO29:I=PEEK(820+J):IFI=14THENNEXT 40040 CLOSE2:OPEN2,I,2:CLOSE2:IFSTTHEN40060 40050 CLOSE15:OPEN15,I,15,"R0:"+A$+"="+A$:INPUT#15,ER:CLOSE15:IFER=63THEN40070 40060 NEXT:RETURN 40070 A$="HELLO CONNECT":Q$=CHR$(34):POKE646,PEEK(53281):PRINT"[147]":POKE53272,23 40080 PRINT"[147]P[207]2048,0:P[207]44,8:P[207]43,1:P[207]56,160:P[207]55,0:CLR:L[207]"Q$A$Q$","I 40090 PRINT"RUN:":POKE631,13:POKE632,13:POKE198,2:END